1. Field of the Invention
This invention relates to the field of data processing systems. More particularly, this invention relates to the field of direct memory access controllers.
2. Description of the Prior Art
Direct memory access (DMA) controllers are used to control the transfer of data between memory and other peripheral devices or between different memories without the data passing through the CPU. DMA controllers can have a plurality of control channels that are set up in hardware and that are used for data transfers between a data source and data destination. Some control channels may be dedicated to a particular device while other devices may be able to select a free channel to use. To initiate a data transfer between for example a peripheral device and memory, the peripheral device driver sets up one of the DMA channels and then transfers a burst of data that may consist of several data items using this control channel. It should be noted that the data transferred from the peripheral may not be bursty, however, it is more efficient to burst the data to memory so it has been found to be advantageous to buffer this data by collecting it and merging it together before performing the burst to the data destination, in this case the memory. Thus, in devices of the prior art such as ARM PL080/PL081 DMA controllers (see http://www.arm.com/documentation/SoC/index.html, ARM PrimeCell (PL080) DMA Controller Revision r1p3 Technical Reference Manual (1 Mb .pdf) Ref: DDI0196G, Issued: 21 Dec. 2005, and ARM PrimeCell (PL081) Single Master DMA Controller r1p2 Technical Reference Manual (990 Kb .pdf) Ref: DDI 0218E, Issued: 21 Dec. 2005. ) there is provided a data store in the form of a FIFO (first in first out buffer) for each DMA channel. Each of the FIFOs must be sized to accommodate a certain maximum data burst, which results in a large amount of storage which is rarely fully utilised. This leads to two problems, one that there is a large gate-count/area to accommodate this storage and secondly that the FIFOs are often too small.